//
//  MusicCell.m
//  Atlantis
//
//  Created by 何恩营 on 14-12-17.
//  Copyright (c) 2014年 lanou3g.com 蓝鸥科技. All rights reserved.
//

#import "MusicCell.h"
#import "UIColor+AddColor.h"
#import "UIImageView+WebCache.h"

// 类的扩展
@interface MusicCell ()

// 大背景视图
@property(nonatomic, retain) UIView *containView;
// 小背景视图
@property(nonatomic, retain) UIView *view;
// 显示专辑详情标题
@property(nonatomic, retain) UILabel *titleLabel;
// 显示播主昵称
@property(nonatomic, retain) UILabel *nickNameLabel;
// 显示创作时间
@property(nonatomic, retain) UILabel *createTimeLabel;
// 专辑封面图片
@property(nonatomic, retain) UIImageView *musicImageView;
// 播放次数图标
@property(nonatomic, retain) UIImageView *playTimesImageView;
// 播放次数
@property(nonatomic, retain) UILabel *playTimesLabel;
// 播放时长图标
@property(nonatomic, retain) UIImageView *durationImageView;
// 播放时长
@property(nonatomic, retain) UILabel *durationLabel;

@end

@implementation MusicCell


// 内存管理
- (void)dealloc
{
    // 对象
    [_music release];
    // 大背景视图
    [_containView release];
    // 小背景视图
    [_view release];
    // 专辑详情标题
    [_titleLabel release];
    // 播主昵称
    [_nickNameLabel release];
    // 专辑详情封面
    [_musicImageView release];
    // 创作时间
    [_createTimeLabel release];
    // 播放次数图标
    [_playTimesImageView release];
    // 播放次数
    [_playTimesLabel release];
    // 播放时长图标
    [_durationImageView release];
    // 播放时长
    [_durationLabel release];
    [super dealloc];
    
}


// 初始化
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        
        //self.contentView.backgroundColor = [UIColor blackColor];
        
        // 自定义cell的背景颜色
        //self.contentView.backgroundColor = [UIColor colorFromHexCode:@"#e6e6e6"];
        
        
        // 创建大背景视图
        self.containView = [[UIView alloc] init];
        // 大背景视图的背景颜色
        self.containView.backgroundColor = [UIColor colorFromHexCode:@"#e6e6e6"];
        // 将大背景视图加载到自定义cell的视图上
        [self.contentView addSubview:self.containView];
        // 内存管理
        [_containView release];
        
        
        // 创建小背景视图
        self.view = [[UIView alloc] init];
        // 小背景视图的颜色
        self.view.backgroundColor = [UIColor whiteColor];
        // 将小背景视图加载到大背景视图
        [self.containView addSubview:self.view];
        // 内存管理
        [_view release];
        
        
        // 创建专辑详情标题视图
        self.titleLabel = [[UILabel alloc] init];
        // 设置专辑详情标题的字体大小
        self.titleLabel.font = [UIFont fontWithName:nil size:16];
        // 将专辑详情标题的视图加载到小背景视图上
        [self.view addSubview:self.titleLabel];
        // 内存管理
        [_titleLabel release];
        
        
        // 创建播主昵称视图
        self.nickNameLabel = [[UILabel alloc] init];
        // 将播主昵称的视图加载到小背景视图上
        [self.view addSubview:self.nickNameLabel];
        // 播主昵称字体设置大小
        self.nickNameLabel.font = [UIFont fontWithName:nil size:12];
        // 播主昵称左对齐
        //self.nickNameLabel.textAlignment = NSTextAlignmentLeft;
        // 内存管理
        [_nickNameLabel release];
        
        
        // 创建创作时间视图
        self.createTimeLabel = [[UILabel alloc] init];
        // 将创作时间的视图加载到小背景视图上
        [self.view addSubview:self.createTimeLabel];
        // 创作时间字体设置大小
        self.createTimeLabel.font = [UIFont fontWithName:nil size:12];
        // 创作时间右对齐
        //self.createTimeLabel.textAlignment = NSTextAlignmentRight;
        // 内存管理
        [_createTimeLabel release];
        
        
        
        // 创建专辑详情图片视图
        self.musicImageView = [[UIImageView alloc] init];
        // 专辑详情图片背景颜色
        //self.musicImageView.backgroundColor = [UIColor blueColor];
        self.musicImageView.image = [UIImage imageNamed:@"cat.jpg"];
        //self.musicImageView
        // 将专辑详情图片加载到小背景视图上
        [self.view addSubview:self.musicImageView];
        // 内存管理
        [_musicImageView release];
        
        
        
        // 创建播放次数的图标视图
        self.playTimesImageView = [[UIImageView alloc] init];
        // 播放次数的图标的图片进行赋值
        self.playTimesImageView.image = [UIImage imageNamed:@"playTimes_32.png"];
        // 将播放次数的图标的视图加载到小背景视图上
        [self.view addSubview:self.playTimesImageView];
        // 内存管理
        [_playTimesImageView release];
        
        
        // 创建播放次数视图
        self.playTimesLabel = [[UILabel alloc] init];
        // 播放次数字体设置大小
        self.playTimesLabel.font = [UIFont fontWithName:nil size:12];
        // 将播放次数视图加载到小背景视图上
        [self.view addSubview:self.playTimesLabel];
        // 内存管理
        [_playTimesLabel release];
        
        // 创建播放时长的图标的视图
        self.durationImageView = [[UIImageView alloc] init];
        // 播放时长的图标的图片进行赋值
        self.durationImageView.image = [UIImage imageNamed:@"duration_32.png"];
        // 将播放时长的图标的视图加载到小背景视图上
        [self.view addSubview:self.durationImageView];
        // 内存管理
        [_durationImageView release];
        
        
        // 创建播放时长视图
        self.durationLabel = [[UILabel alloc] init];
        // 播放时长字体设置大小
        self.durationLabel.font = [UIFont fontWithName:nil size:12];
        // 将播放时长视图加载到小背景视图上
        [self.view addSubview:self.durationLabel];
        // 内存管理
        [_durationLabel release];
    }
    return self;
}


- (void)setMusic:(Music *)music
{
    // 判断是否为同一对象
    if (_music != music) {
        [_music release];
        _music = [music retain];
    }
    // 专辑详情标题赋值
    self.titleLabel.text = self.music.title;
    // 专辑详情标题不限行数
    self.titleLabel.numberOfLines = 0;
    // 专辑详情标题自适应高度
    [self.titleLabel sizeToFit];
    
    // 播主昵称赋值 - 字符创拼接
    self.nickNameLabel.text =  [@"by " stringByAppendingString:self.music.nickname];
    if (self.music.coverLarge.length != 0) {
        [self.musicImageView setImageWithURL:[NSURL URLWithString:self.music.coverLarge]];
    } else {
        [self.musicImageView setImageWithURL:[NSURL URLWithString:self.music.coverSmall]];
    }

    
    // 专辑详情的创作时间赋值
    NSLog(@"%@", music.createdAt);
    // 到现在的时间再除以1000 (因为album.lastUptrackAt是微秒), 得到秒数
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:([music.createdAt longLongValue] / 1000)];
    //NSLog(@"%@, %@", date, [NSDate date]);
    
    // 在NSDate 和 NSString 之间相互转换的格式
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    // 设置一个日期格式,让字符串能按照设定的格式转为相应的日期
    [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
    
    // 将时间按照格式转换为时间字符串
    NSString *creatStr = [formatter stringFromDate:date];
    // 将时间字符串按照格式转换为时间
    NSDate *creatDate = [formatter dateFromString:creatStr];
    // 将当前时间按照格式转换为字符串
    NSString *nowStr = [formatter stringFromDate:[NSDate date]];
    // 将当前时间字符串按照转换为时间
    NSDate *nowDate = [formatter dateFromString:nowStr];
    //得到相差秒数
    NSTimeInterval time = [nowDate timeIntervalSinceDate:creatDate];
    //NSLog(@"*******%f", time);
    
    // 内存管理
    [formatter release];

    
    // 将相差的天数转换成相差的天数
    NSInteger days = ((NSInteger) time / (3600 * 24));
    //NSLog(@"%ld", days);
    
    
    // 根据相差的时间进项判断
    if (time / 1440 < 24) {
        // 如果相差的小时数小于24小时, 则显示多少小时前原创
        NSString *preDay = [NSString stringWithFormat:@"%ld", (NSInteger)time / 1440];
        self.createTimeLabel.text = [preDay stringByAppendingString:@"小时前原创"];
    } else if (days / 31 == 0) {
        // 如果相差的天数小于31天, 则显示多少天前原创
        NSString *preDay = [NSString stringWithFormat:@"%ld", days];
        self.createTimeLabel.text = [preDay stringByAppendingString:@"天前原创"];
    } else if (days / 365 == 0) {
        // 如果相差的天数小于365天, 则显示多少月前原创
        NSString *preDay = [NSString stringWithFormat:@"%ld", days / 31];
        self.createTimeLabel.text = [preDay stringByAppendingString:@"个月前原创"];
    } else {
        // 如果相差的天数大于365天, 则显示多少年前原创
         NSString *preDay = [NSString stringWithFormat:@"%ld", days / 365];
        self.createTimeLabel.text = [preDay stringByAppendingString:@"年前原创"];
    }
    
    
    
    // 播放次数
    self.playTimesLabel.text = [NSString stringWithFormat:@"%@", self.music.playtimes];

    
    // 播放时长
    // 判断分,秒是否小于10
    if (self.music.duration % 60 < 10  && self.music.duration / 60 < 10) {
        // 分和秒都小于10, 则分和秒前面都加0
        self.durationLabel.text = [NSString stringWithFormat:@"0%ld:0%ld", self.music.duration / 60, self.music.duration % 60];
    } else if (self.music.duration / 60 < 10) {
        // 分小于10, 则分前面加0
        self.durationLabel.text = [NSString stringWithFormat:@"0%ld:%ld", self.music.duration / 60, self.music.duration % 60];
    } else if (self.music.duration % 60 < 10) {
        // 秒小于10, 则秒前面加0
        self.durationLabel.text = [NSString stringWithFormat:@"%ld:0%ld", self.music.duration / 60, self.music.duration % 60];
    } else {
        // 否则分和秒都不加0
        self.durationLabel.text = [NSString stringWithFormat:@"%ld:%ld", self.music.duration / 60, self.music.duration % 60];
    }
    
}

- (void)layoutSubviews
{
    [super layoutSubviews];
    
    // 大背景视图的大小设置
    self.containView.frame = CGRectMake(0, 0, self.contentView.bounds.size.width, self.bounds.size.height);
    
    // 小背景视图的大小设置
    self.view.frame = CGRectMake(10, 5, self.containView.frame.size.width - 20, self.containView.frame.size.height - 10);
    
    // 专辑详情标题大小设置
    self.titleLabel.frame = CGRectMake(20, 5, self.view.frame.size.width - self.view.frame.size.height - 20, self.view.frame.size.height / 2 );
    
   // 播主昵称大小设置
    self.nickNameLabel.frame = CGRectMake(20, self.view.frame.size.height / 2 + 5, (self.view.frame.size.width - self.view.frame.size.height- 20) / 2, 15);
    
    // 创作时间大小设置
    self.createTimeLabel.frame = CGRectMake((self.view.frame.size.width - self.view.frame.size.height- 20) / 2 + 35, self.view.frame.size.height / 2 + 5, (self.view.frame.size.width - self.view.frame.size.height- 20) / 2, 15);

    // 专辑详情封面的大小设置
    self.musicImageView.frame = CGRectMake(self.view.frame.size.width - self.view.frame.size.height + 10, 1, self.view.frame.size.height - 10, self.view.frame.size.height - 2);
    
    
    // 播放次数图标
    self.playTimesImageView.frame = CGRectMake(20, self.view.frame.size.height / 2 + 25, 15, 15);
    
    // 播放次数
    
    self.playTimesLabel.frame = CGRectMake(40, self.view.frame.size.height / 2 + 25, (self.view.frame.size.width - self.view.frame.size.height- 20) / 2, 15);
 
    // 播放时长图标
    self.durationImageView.frame = CGRectMake((self.view.frame.size.width - self.view.frame.size.height- 20) / 2 + 35, self.view.frame.size.height / 2 + 25, 15, 15);
    
    // 播放时长
    self.durationLabel.frame = CGRectMake((self.view.frame.size.width - self.view.frame.size.height- 20) / 2 + 55, self.view.frame.size.height / 2 + 25, (self.view.frame.size.width - self.view.frame.size.height- 20) / 2, 15);
    
    
   
}





- (void)awakeFromNib {
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end
